Mark J. Kilgard
Simon Hui
Allen A. Leinwand
Dave Spalding
To support OpenGL and PEX rendering within the Silicon
Graphics X server without compromising interactivity, we devised and
implemented a scheme named multi-rendering. Making minimal
changes to the X Consortium sample server's overall structure, the
scheme allows independent processes within the X server's address space
to perform OpenGL rendering asynchronously to the X server's main
thread of execution. The IRIX operating system's process share group
facility, user-level and pollable semaphores, and support for
virtualized direct access rendering are all leveraged to support
multi-rendering. The Silicon Graphics implementation of PEX also uses
the multi-rendering facility and works by converting rendering requests
into OpenGL commands. Multi-rendering is contrasted with other schemes
for improving server interactivity. Unlike co-routines,
multi-rendering supports multi-processing; unlike multi-threading,
multi-rendering requires minimal locking overhead.